Aufgabenblatt 13 – XML

13.1) JAXP - DOM
Erweitere das Projekt „21_DOM_Demo“ wie folgt:
⦁	Schreiben: neue Terminart „Kongresse“ + 2 neue Termine
⦁	Schreiben: zusätzliche Info für jeden Termin „wo“
⦁	Lesen: Sämtliche Termine inkl. aller Informationen auf der Konsole ausgeben

13.2) JAXP – SAX
Erweitere das Projekt „22_SAX_Demo“ so, daß die aus 13.1 erstellte XML-Datei vollständig ausgelesen wird.


13.3) JAXP – StaX
Erweitere das Projekt „23_STAX_Demo“ wie folgt:
⦁	Schreiben: neue Terminart „Kongresse“ + 2 neue Termine
⦁	Schreiben: zusätzliche Info für jeden Termin „wo“
⦁	Lesen: Sämtliche Termine inkl. aller Informationen auf der Konsole ausgeben

13.4) JAXB – Serialisierung
Gegeben ist folgendes Klassengerüst

 
⦁	Implementiere das folgende Klassengerüst (+ zusätzlich alle Getter und Setter)
⦁	Lege in der Klasse „Hauptprogramm.java“ eine Schulklasse mit 5 Schülern an
⦁	Speichere die Klasse + Schüler mittels JAXB – Serialisierung als XML-Datei ab
⦁	Lese die soeben angelegte XML-Datei wieder ein und gib sämtliche Informationen der Klasse aus.
⦁	Was passiert beim Einlesen der XML-Datei wenn man zuvor
⦁	aus der XML-Datei das Attribut „nachname“ bei allen Schülern löscht? 
⦁	ein neues Attribut „Alter“ bei jedem Schüler hinzufügt
⦁	nur bei einem Schüler das Attribut „nachname“ löscht?
⦁	nur bei einem Schüler ein neues Attribut hinzufügt?
⦁	Definiere das Attribut „name“ der Klasse „Klasse“ einmal als XML-Element, einmal als XML-Attribut. Vergleiche die beiden Varianten der XML-Ausgaben. Worin liegt der Unterschied?




13.5) JAXB / TreeSet

⦁	Erstelle ein TreeSet mit 10 Werten (Typ egal) 
⦁	Gib den TreeSet auf der Konsole aus
⦁	Schreibe den TreeSet in eine XML-Datei
⦁	Hole den TreeSet wieder aus der XML-Datei und gib diesen auf der Konsole aus.


13.6_A) DOM
Erstelle ein neues Projekt und bilde die XML-Datei wie in Aufgabe 13.4 beschrieben mit DOM ab (erstellen & auslesen) 

13.6_B) SAX
Erstelle ein neues Projekt und lese die XML-Datei wie in Aufgabe 13.4 beschrieben mittels SAX aus. Als Ergebnis soll ein Objekt vom Typ Klasse mit 5 Schülern entstehen! Gib zur Kontrolle alle Schüler im Objekt Klasse auf der Konsole aus.

13.6_C) StaX
Erstelle ein neues Projekt und bilde die XML-Datei wie in Aufgabe 13.4 beschrieben mit StaX ab (erstellen & auf Konsole ausgeben)


13.7) JAXB / DOM / SAX / Stax
Welche(n) XML-Parser kann man bei folgenden Anforderungen gut/nicht gut verwenden? Begründe deine Antwort:

⦁	Schreiben einer XML-Datei:



⦁	Schreiben einer XML-Datei mit 500.000 XML-Elementen:



⦁	Schreiben vieler verschiedener XML-Dateien über ein(!) Programm:



⦁	Lesen einer kleinen XML-Datei:



⦁	Lesen von 300.000 XML-Elementen aus einer Datei:



⦁	Lesen vieler verschiedener XML-Dateien über ein(!) Programm:

13.8) Extrahiere eine Liste der GoodGuys und der BadGuys, einmal mit den IPAddress Infos und einmal mit den Hostname Infos aus der beiliegenden XML Datei. Die Ausgabe auf der Konsole könnte wie folgt so aussehen:

Good guys, IPAddress format:
        IPAddress: 10.9.8.7
        IPAddress: 10.9.8.7 Port="8080"
Good guys, hostname format:
        Hostname: www.htl-donaustadt.com
        Hostname: donaustadt Port="8080"
Bad guys, IPAddress format:
        IPAddress: 10.9.8.8
        IPAddress: 10.9.8.8 Port="9090"
Bad guys, hostname format:
        Hostname: www.google.com
        Hostname: www.microsoft.com Port="9090"

<?xml version="1.0" encoding="utf-8"?>
<Nodes>
  <GoodGuys>
    <IPAddress>10.9.8.7</IPAddress>
    <IPAddress Port="8080">10.9.8.7</IPAddress>
  </GoodGuys>
  
  <BadGuys>
    <IPAddress>10.9.8.8</IPAddress>
    <IPAddress Port="9090">10.9.8.8</IPAddress>
  </BadGuys>

  <GoodGuys>
    <Hostname>www.htl-donaustadt.com</Hostname>
    <Hostname Port="80">donaustadt</Hostname>
  </GoodGuys>
  
  <BadGuys>
    <Hostname>www.google.com</Hostname>
    <Hostname Port="8080">www.microsoft.com</Hostname>
  </BadGuys>
</Nodes>

13.9 Gegeben ist die beiliegende Datei Klassenliste.csv
Schreibe eine Applikation, die diese Datei einliest und Schülerobjekte mit den entsprechenden Eigenschaften erzeugt. Erzeuge aus der Objektliste eine XML Datei der Klasse mit den einzelnen Schülern und den bekannten Eigenschaften:

⦁	NR
⦁	NAME	
⦁	VORNAME	
⦁	BSPKU	
⦁	TVM	
⦁	ITZ-B	
⦁	ITZ-F  
⦁	Geschlecht m/w

Erweitere als Kontrolle anschließend dein Programm um eine Methode, welche die XML-Datei wieder einliest und die darin enthaltenen Informationen und auf der Konsole ausgibt.

;5AHIF;DA;;;;
;;;;;;
;D401;;;;;
NR;NAME;VORNAME;BSPKU;TVM;ITZ-B;ITZ-F
1;B;P;x;;x;x
2;B;L;;;;
3;F;L;x;;;
4;F;P;x;x;x;x
5;F;M;;;;x
6;J;U;;x;;x
7;L;A;;;;
8;M;D;x;x;x;x
9;P;T;;x;;x
10;R;S;;;;x
11;R;M;;x;;x
12;R;D;;x;;x
13;R;M;x;x;x;x
14;R;L;x;x;x;x
15;T;N;;;;
16;V;T;;;;x
17;Y;X;;;;
18;Z;A;;;;
;;;6;8;5;12

13.10 Schach

 Erstelle ein Programm das Schachfiguren (8 Bauern, 2 Türme, 2 Pferde, 2 Läufer,
König Dame in den Farben Schwarz und Weiß) zufällig auf einem 8x8 Brett verteilt.
Speichere anschließend den Zustand des Schachbretts in ein XML-File.
 Lade anschließend den gespeicherten Zustand wieder aus der XML-Datei aus und
gib ihn auf der Konsole aus.
Hinweis: Es kann nur eine Figur pro Feld stehen